Un manuel pour les compétiteurs

par

Caesum

(A Challengers Handbook - Site original : http://www.caesum.com)
(Version française par CommComm avec l'aimable autorisation de Caesum - Cronos - 27 février 2006)

Considérations générales

Ça fait maintenant un bout de temps que je participe à des challenges et la plupart du temps je n'ai pas conservé de notes sur les solutions. C'est seulement récemment que j'ai commencé à noter des choses et à conserver des notes sur les challenges. L'avantage de procéder ainsi est énorme. Une fois, j'ai réussi environ les quarante premiers challenges sur un site, sans conserver de notes. Puis un nouveau niveau a été ajouté ... et celui-ci nécessitait d'avoir résolu les quarante premiers et d'avoir noté une lettre qui avait été ajoutée à la fin de chaque solution. Retour au point de départ.
D'autres fois, j'ai résolu quelque chose sur un site, et je me retrouve planté avec exactement le même problème sur un autre site, juste parce que j'avais oublié comment je l'avais résolu sur le premier.
Troisième point. J'ai vu tant de réinitialisations sur des sites, et tant de sites qui ont changé d'adresse que conserver des notes sur la façon dont j'avais résolu les challenges la première fois est vraiment quelque chose d'important pour moi maintenant. Si vous terminez une série d'épreuves et que deux ans après le site change d'adresse et réinitialise le challenge, vous vous trouvez renvoyé au point de départ.
Un quatrième exemple sur l'absence de notes. Récemment, un site présentait quatre niveaux. Vous arrivez au bout et vous attendez dans l'extase... puis le cinquième niveau arrive et un des mots de passe se réfère à quelque chose du niveau précédent. Si vous ne pouvez pas vous en souvenir parce que ça remonte à plusieurs mois, vous êtes planté. Maintenant que je vous dit tout ça, j'espère que vous garderez une espèce de mémo, de "logbook" sur les challenges que vous aurez résolus.

Quelques mots d'ordre général à titre de conseil si vous êtes vraiment en rade. Parfois, vous arrivez à un stade où en essayant de résoudre un challenge donné, vous ne voyez vraiment plus comment avancer. Le mieux à faire dans ce cas, c'est ça :

  • Attendez quelques jours, prenez un peu de repos et puis retournez-y avec l'esprit frais et recommencez.

  • Regardez toujours de près la source HTML. Regardez chaque chose et notez s'il n'y a vraiment rien d'anormal dans cette page source. J'ai vu des messages codés dans les tabulations et les espaces à la fin de lignes, ce qui exige vraiment une analyse attentive. Notez tous les noms de scripts, tous les chemins de répertoire ou de fichiers. Recherchez tout ce qui pourrait sortir de l'ordinaire. Peut-être regardez vous dans /level1/level2/index.html avec une référence à images/blah.jpg. Alors, pourquoi y a-t-il un répertoire d'images dans le répertoire level2 et qu'y a-t-il d'autre dedans ?

  • Lisez avec soin tous les commentaires visibles : ne fournissent-ils pas un indice voilé sur l'épreuve ? Une petite recherche sur Google ne peut-elle vous conduire quelque part ? Pensez soigneusement à ce que vous cherchez, essayez aussi bien les phrases que les mots.

  • Demandez-vous ce qui rend ce niveau différent des autres. Récemment, j'ai fini un niveau sur un site et je suis passé au suivant. Je n'avais même pas encore regardé ce qu'il y avait à faire quand j'ai passé la souris sur le lien pointant vers le forum et j'ai remarqué qu'il avait un nom différent des autres niveaux. Une recherche sur Google a vite révélé que c'était le nom d'un forum classique ... et devinez quoi ? Il fallait utiliser un exploit dessus et c'était là l'essence même du challenge. Et plein de gens qui étaient là depuis longtemps n'avaient pas remarqué la différence. Dans la plupart de ce genre d'épreuves, c'est de l'observation à 99%.

  • Souvent vous trouverez une page HTML écrite manuellement parmi un tas de pages générées par programme et ça peut être un vrai cadeau. Un code manuel est court et propre. Un code généré par programme est un vrai fouillis. Si vous avez regardé avec attention des sources HTML depuis suffisamment longtemps, alors vous verrez les différences au premier coup d'oeil.

  • Lisez les forums. Normalement, les sites ont un forum : lisez les. Lisez tout, il y a souvent des indices à trouver au milieu des demandes d'aide que les gens ont tendance à poster. Les "+Malas riddles" en sont un excellent exemple, les forums sont truffés d'indices si vous êtes capable de les comprendre. Mais ceci nécessite souvent plusieurs lectures du forum de A à Z.

  • Regardez partout sur le site. J'ai réussi des niveaux bizarres où on peut vraiment être planté juste en regardant sur les sites, dans la partie téléchargements ou liens, et me rendre compte que cette partie du challenge a été cachée quelque part sur le site (bêtement à la vue de tout le monde, comme "voici une wordlist qui pourrait vous être utile").

    Le moment est venu de citer quelques outils d'usage quotidien qui peuvent servir à une quantité de choses. On entend des choses comme "Eh, j'utilise Linux : et nous, alors ?". Mais pour être honnête, voilà mon opinion : J'utilise Windows, je n'ai rien contre Linux mais en général les utilisateurs de Linux semblent aimer la voie de la difficulté pour faire les choses. Ils aiment lire des manuels et ils adorent les outils en ligne de commande. Ils aiment écrire des scripts et installer leurs propres systèmes d'exploitation compiler des kernels et plus généralement tripatouiller tout ce qui leur tombe sous la main. D'où ma question :"Qu'est ce que ça vous donne de lire ainsi ?". Les outils dont je parle seront des outils Windows bien qu'il puisse en exister des équivalents dans d'autres OS (et je suis navré si vous êtes utilisateur de Mac... mais qui se sert d'un Mac de toute façon ? Et je suppose que vous avez un addon pour faire tourner des progs PC).

  • Un bon éditeur de texte, un programme multifonctions. Wordpad est bon à jeter, laissez tomber. Notepad est bien pour traiter du texte si vous avez une version qui permet de charger plus de 64 Ko (donc si ce n'est pas la précédente version de Windows 95/98). Mon choix : Ultraedit. UltraEdit détecte les fichiers de format Unix et vous demande si vous voulez les convertir quand vous les chargez. UltraEdit est rapide. UltraEdit trie, convertit, affiche en hexa, gère la syntaxe en couleurs, reconnaît différents langages du C à Perl, permet de comparer des fichiers, permet des formatages complexes, utilise des macros et toutes sortes d'autres choses auxquelles je n'ai probablement jamais pensé. Ca vaut vraiment le coup de se le procurer.

  • Un bon éditeur hexa. J'utilise Hex Workshop. Il y en a peut-être de meilleurs mais j'utilise celui-ci depuis des années et il me va bien. Il fait tout ce qu'on attend d'un éditeur hexa comme manipuler les octets, faire du XOR, des rotations, des comparaisons de fichiers... Quand vous voulez vraiment savoir ce qui se passe dans un fichier, vous avez besoin d'un éditeur hexa.

  • Un langage. Vous devez avoir pour objectif d'être capable de programmer au moins dans un langage, ce qui vous permettra d'avancer beaucoup plus loin dans les challenges. Mon préféré est le C, et j'utilise MSVC ou Borland selon l'humeur du moment. Mais j'ai aussi recours à VBA/Excel, Maple, ASM ou un quelconque des vingt autres langages que j'ai utilisés ou dont j'ai eu à connaître dans le passé. Apprenez-en un et celui que vous apprendrez après sera dix fois plus facile à apprendre.

  • Un vrai "calculo-broyeur" de nombres ("number cruncher"). C'est un outil qu'on ne cite habituellement pas. Peu de gens disposent de quoi traiter rapidement des nombres de manière très générale. J'ai fait des maths théoriques à l'université et plus tard un Master of Sciences. Voilà pourquoi j'aime avoir sous la main une espèce de programme capable de manipuler les nombres dans tous les sens. En plus j'ai une remise sur Maple et j'ai eu à l'étudier. J'utilise Maple pour toutes sortes de problèmes. Citons quelques exemples issus de problèmes posés sur des sites. Quelques problèmes de cracking ont été construits sur la base de fonctions modulaires inverses... pas de difficultés avec Maple. Quelques problèmes sur Vallodolid impliquent de trouver un jeu de relations mathématiques entre différents points et puis de résoudre les équations simultanées. Ne vous enquiquinez pas avec ça : donnez-le à faire à Maple. Ce qui ne signifie pas que Maple soit un outil facile à utiliser. On ne peut pas le récupérer et aussitôt commencer à résoudre tous ses problèmes avec. Je sais bien que j'ai de la chance. Quelques rares épreuves ont été basées sur RSA. Facile à résoudre avec Maple (il est vrai que les problèmes donnés n'étaient pas difficiles). Cela dit, je me suis aussi fait mes propres routines de calcul avec des grands nombres et je m'en suis servi pour résoudre des problèmes sur des nombres de 5000 chiffres sur Vallodolid. C'est donc une bonne chose que d'avoir quelques routines de calcul sur les grands nombres dans le langage de votre choix (et si c'est Java, c'est déjà inclus de base).

    Il y a quelques livres utiles et qui ne correspondent pas à une catégorie précise. Quelques références à HTML sont toujours utiles. Personnellement, j'utilise "Instant HTML" quand je veux rechercher quelque chose, mais j'ai entendu dire que "Dynamic HTML" est bien. Voir aussi "Code complete" au sujet duquel j'ai été interrogé après avoir dit que je l'avais lu. Je devrais le relire et me flageller quand je ne respecte pas ce qu'il dit. "Maximum security" est aussi à recommander aux débutants car il évoque de très nombreux outils utilisés dans un tas de situations. En lisant ce genre de livre du début à la fin, vous cesserez d'être un newbie.

    Retour au sommaire